@@ -0,0 +1,20 @@ |
||
| 1 |
+$ -> |
|
| 2 |
+ svg = document.querySelector('.agent-diagram svg.diagram')
|
|
| 3 |
+ overlay = document.querySelector('.agent-diagram .overlay')
|
|
| 4 |
+ getTopLeft = (node) -> |
|
| 5 |
+ bbox = node.getBBox() |
|
| 6 |
+ point = svg.createSVGPoint() |
|
| 7 |
+ point.x = bbox.x + bbox.width |
|
| 8 |
+ point.y = bbox.y |
|
| 9 |
+ point.matrixTransform(node.getCTM()) |
|
| 10 |
+ $(svg).find('g.node[data-badge-id]').each ->
|
|
| 11 |
+ tl = getTopLeft(this) |
|
| 12 |
+ $('#' + this.getAttribute('data-badge-id'), overlay).each ->
|
|
| 13 |
+ badge = $(this) |
|
| 14 |
+ badge.css |
|
| 15 |
+ left: tl.x - badge.outerWidth() * (2/3) |
|
| 16 |
+ top: tl.y - badge.outerHeight() * (1/3) |
|
| 17 |
+ 'background-color': badge.find('.label').css('background-color')
|
|
| 18 |
+ .show() |
|
| 19 |
+ return |
|
| 20 |
+ return |
@@ -214,33 +214,7 @@ module DotHelper |
||
| 214 | 214 |
} |
| 215 | 215 |
} |
| 216 | 216 |
} |
| 217 |
- |
|
| 218 |
- root << Nokogiri::XML::Node.new('script', doc) { |script|
|
|
| 219 |
- script.content = <<-SCRIPT |
|
| 220 |
-$(function () {
|
|
| 221 |
- var svg = document.querySelector('.agent-diagram svg.diagram');
|
|
| 222 |
- var overlay = document.querySelector('.agent-diagram .overlay');
|
|
| 223 |
- var getTopLeft = function (node) {
|
|
| 224 |
- var bbox = node.getBBox(); |
|
| 225 |
- var point = svg.createSVGPoint(); |
|
| 226 |
- point.x = bbox.x + bbox.width; |
|
| 227 |
- point.y = bbox.y; |
|
| 228 |
- return point.matrixTransform(node.getCTM()); |
|
| 229 |
- }; |
|
| 230 |
- $(svg).find('g.node[data-badge-id]').each(function () {
|
|
| 231 |
- var tl = getTopLeft(this) |
|
| 232 |
- $('#' + this.getAttribute('data-badge-id'), overlay).each(function () {
|
|
| 233 |
- var badge = $(this); |
|
| 234 |
- badge.css({
|
|
| 235 |
- left: tl.x - badge.outerWidth() * (2/3), |
|
| 236 |
- top: tl.y - badge.outerHeight() * (1/3), |
|
| 237 |
- 'background-color': badge.find('.label').css('background-color')
|
|
| 238 |
- }).show(); |
|
| 239 |
- }); |
|
| 240 |
- }); |
|
| 241 |
-}) |
|
| 242 |
- SCRIPT |
|
| 243 |
- } |
|
| 217 |
+ # See also: app/assets/diagram.js.coffee |
|
| 244 | 218 |
}.at('div.agent-diagram').to_s
|
| 245 | 219 |
end |
| 246 | 220 |
end |
@@ -1,3 +1,7 @@ |
||
| 1 |
+<% content_for :head do %> |
|
| 2 |
+ <%= javascript_include_tag "diagram" %> |
|
| 3 |
+<% end %> |
|
| 4 |
+ |
|
| 1 | 5 |
<div class='container'> |
| 2 | 6 |
<div class='row'> |
| 3 | 7 |
<div class='col-md-12'> |
@@ -61,7 +61,7 @@ Huginn::Application.configure do |
||
| 61 | 61 |
end |
| 62 | 62 |
|
| 63 | 63 |
# Precompile additional assets (application.js.coffee.erb, application.css, and all non-JS/CSS are already added) |
| 64 |
- config.assets.precompile += %w( graphing.js user_credentials.js ) |
|
| 64 |
+ config.assets.precompile += %w( diagram.js graphing.js user_credentials.js ) |
|
| 65 | 65 |
|
| 66 | 66 |
# Ignore bad email addresses and do not raise email delivery errors. |
| 67 | 67 |
# Set this to true and configure the email server for immediate delivery to raise delivery errors. |